home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / comms / other / ums / rexx / groupcontents.rexx next >
OS/2 REXX Batch file  |  1999-06-14  |  4KB  |  135 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    GroupContents
  3.    :Contents.   shows contents of one group in UMS' messagebase
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Hoffmannstraße 168
  6.    :Address.    D-71229 Leonberg
  7.    :EMail.      kai@studbox.uni-stuttgart.de
  8.    :Version.    $VER: GroupContents.rexx 2.1 (11.11.95)
  9.    :Copyright.  Public Domain
  10.    :Language.   ARexx
  11.    :Translator. RexxMast
  12.    
  13. $Id: GroupContents.rexx 2.1 1995/11/11 12:11:08 kai Exp $
  14. $Log: GroupContents.rexx $
  15. # Revision 2.1  1995/11/11  12:11:08  kai
  16. # v1.0 [kai] 23-Sep-93
  17. # v1.1 [mh]  26-Sep-93 adaped to skeleton
  18. # v1.2 [kai] 29-Sep-93 no skeleton, added MakeFlags()
  19. # v1.3 [hG]  16-Jan-94 improofed argument parsing,
  20. #                      added option NoUpdate
  21. # v1.4 [hG]  23-Jan-94 uses UMSInit.rexx 1.1 and
  22. #                      hgRexxSupport.library
  23. # v2.0 [kai] 21-Dec-94 adapted to UMS v11
  24. # v2.1 [kai] 11-Nov-95 adapted to newest standard
  25. #
  26.  
  27. ------------------------------------------------------------------------ */
  28.  
  29. /*** Startup ***/
  30.  
  31. options results
  32.  
  33. signal on BREAK_C
  34. signal on BREAK_D
  35. signal on BREAK_E
  36. signal on BREAK_F
  37. signal on ERROR
  38. signal on HALT
  39. signal on IOERR
  40. signal on SYNTAX
  41.  
  42. /*** Init ***/
  43.  
  44. call addlib("rexxdossupport.library", 0, -30)
  45. call addlib("ums.library", 0, -210, 11)
  46. call UMSInitConsts()
  47.  
  48. /*** Arguments ***/
  49.  
  50. parse SOURCE . " " . " " ProgramName .
  51. ArgsTemplate = "NAME/A,PASSWORD,SERVER/K,GROUP/A"
  52. args.SERVER = ""
  53. args.PASSWORD = ""
  54.  
  55. parse arg arguments
  56. if strip(arguments) = '?' then do
  57.   call writech(STDOUT, ArgsTemplate || ': ')
  58.   arguments = readln(STDIN)
  59. end; else nop
  60. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  61.   say Fault(RC, ProgramName)
  62.   exit 10
  63. end; else nop
  64.  
  65. /*** Login ***/
  66.  
  67. account = UMSLogin(args.name, args.password, args.server)
  68. if account = 0 then do
  69.   say "unable to login."
  70.   exit 10
  71. end
  72.  
  73. /*** Do the magic ***/
  74.  
  75. /* clear local flags 0, 1 and 2 on all messages */
  76. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(), UMSMakeFlags(0, 1, 2),,, "LOCAL", UMSMakeFlags(), UMSMakeFlags())
  77. /* set local flag 1 on all messages of this group */
  78. res = UMSSelectField(account, "LOCAL", UMSMakeFlags(1), UMSMakeFlags(),,, UMSCODE_Group, args.group, TRUE)
  79. /* set local flag 2 on all accessable messages */
  80. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(2), UMSMakeFlags(),,, "USER", UMSMakeFlags(UMSUSTAT_ReadAccess), UMSMakeFlags(UMSUSTAT_ReadAccess))
  81. /* set local flag 0 on all messages with flag 1 AND flag 2 set */
  82. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, "LOCAL", UMSMakeFlags(1, 2), UMSMakeFlags(1, 2))
  83.  
  84. last = 0
  85. do forever
  86.   /* find next message with flag 0 set */
  87.   last = UMSSearchFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(0), last)
  88.   if last = 0 then leave
  89.   drop msg. /* _IMPORTANT_ */
  90.   if ~UMSReadMsgField(account, last, msg., UMSCODE_FromName, TRUE) | ~UMSReadMsgField(account, last, msg., UMSCODE_Subject, TRUE) then do
  91.     call CheckErr
  92.     RC = 20; call LOGOUT
  93.   end
  94.   say right(last, 5, " ") left(msg.UMSCODE_FromName, 20) left(msg.UMSCODE_Subject, 40)
  95. end
  96.  
  97. /*** Final cleanup ***/
  98.  
  99. BREAK_C:
  100. BREAK_D:
  101. BREAK_E:
  102. BREAK_F:
  103.  
  104. RC = 0
  105.  
  106. ERROR:
  107. HALT:
  108. IOERR:
  109. SYNTAX:
  110.  
  111. IF RC ~= 0 THEN DO
  112.   SAY "Error: " rc errortext(rc) "Line" sigl
  113.   RC = 20
  114. END
  115.  
  116. /*** Logout ***/
  117.  
  118. LOGOUT:
  119.  
  120. if account ~= 0 then do
  121.   call UMSLogout(account)
  122.   account = 0
  123. end
  124.  
  125. exit RC
  126.  
  127. /*** Support ***/
  128.  
  129. CheckErr: procedure expose account
  130.   err = UMSErrNum(account)
  131.   if err ~= 0 then do
  132.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  133.   end
  134. return
  135.